/**
 * Copyright &copy; 2012-2014 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package cn.knet.sp.ncrm.modules.customer.potentialcustomer.dao;

import cn.knet.sp.ncrm.common.persistence.CrudDao;
import cn.knet.sp.ncrm.common.persistence.annotation.MyBatisDao;
import cn.knet.sp.ncrm.modules.customer.potentialcustomer.entity.PotentialCustomer;
import cn.knet.sp.ncrm.modules.customer.potentialcustomer.vo.PotentialCustomerVo;

import java.util.List;
import java.util.Map;

/**
 * 潜在客户主表DAO接口
 *
 * @author gehaiyang
 * @version 2015 -08-24
 * @since 2015 /09/02 15:52:06
 */
@MyBatisDao
public interface PotentialCustomerDao extends CrudDao<PotentialCustomer> {

	/**
	 * 获取所有主数据
	 *
	 * @author shishouyang
	 * @date 2015年8月30日 下午5:55:32
	 */
	List<PotentialCustomer> findListByParentIdIsNull(PotentialCustomer potentialCustomer);


	/**
	 * 获取主数据的所有次数据
	 *
	 * @author shishouyang
	 * @date 2015年8月30日 下午5:55:32
	 */
	List<PotentialCustomer> findListByParentId(PotentialCustomer potentialCustomer);

	/**
	 * 更新管理分组信息
	 *
	 * @author Gehaiyang
	 * @date 2015年8月29日 上午10:56:57
	 */
	void updateAdminGroupInfo(PotentialCustomer potentialCustomer);

	/**
	 * 更新分配信息
	 *
	 * @author Gehaiyang
	 * @date 2015年8月27日 上午10:29:48
	 */
	void updateDistInfo(PotentialCustomer potentialCustomer);

	/**
	 * 批量更新字段
	 *
	 * @author Gehaiyang
	 * @date 2015年8月30日 下午5:55:32
	 */
	void updateBatchInfo(PotentialCustomer potentialCustomer);

	/**
	 * 合并数据
	 *
	 * @author Gehaiyang
	 * @date 2015年9月1日 下午3:27:15
	 */
	void mergerData(PotentialCustomer potentialCustomer);
	
	/**
	 *  更新主数据合并数量及未读数量
	 *  
	 * @author Gehaiyang
	 * @date 2015年9月6日 上午10:17:43
	 * @param potentialCustomer
	 */
	void updateMergerNum(PotentialCustomer potentialCustomer);
	
	/**
	 * 更新基本信息
	 * 
	 * @author Gehaiyang
	 * @date 2015年9月11日 下午2:05:26
	 * @param potentialCustomer
	 */
	void updateBasicInfo(PotentialCustomer potentialCustomer);

	/**
	 * 根据 potentialCustomer 查询单个客户的详细基本信息（包含potentialCustomer and potentialCustomerAddInfo 的信息）
	 *
	 * @author fengyapeng
	 * @since 2015 /08/29 14:10:13
	 */
	public PotentialCustomerVo getDetail(PotentialCustomer potentialCustomer);

	/**
	 * 分解逻辑
	 *
	 * @param potentialCustomer the potential customer
	 * @author fengyapeng
	 * @since 2015 /08/31 17:54:52
	 */
	public void resolvePotentialCustomer(PotentialCustomer potentialCustomer);

	/**
	 * 根据id 更新 用户分组
	 *
	 * @param paramsMap the params map, keys:{lastUpdated,updateIds,group1,group2,realGroup,hasGroup,updateGroupId}
	 * @author fengyapeng
	 * @since 2015 /09/02 15:52:08
	 */
	public void updateGroupInfo(Map paramsMap);

	/**
	 * 数据为系统数据,查询指定执行人，指定客户状态的 客户数量
	 * @author fengyapeng
	 * @since 2015 /09/11 10:28:02
	 * @param paramsMap the params map
	 * @return the int
	 */
	public int countByCustomerStatusIds(Map paramsMap);

	/**
	 * 数据为系统数据,查询指定执行人，指定客户状态的 客户
	 * @author fengyapeng
	 * @since 2015 /09/11 15:34:17
	 * @param map the map
	 * @return the list
	 */
	List<PotentialCustomer> findListByCustomerStatusIds(Map map);
	
	/**
	 * <p>收回数据分配</p>
	 * @author jierf
	 * @since 2016-09-08 23:17
	 * @param potentialCustomer
	 */
	public void recovery(PotentialCustomer potentialCustomer);
	
	/**
	 * <p>获取非数据管理员的客户数据 add by jief 20170211</p>
	 * @param potentialCustomer
	 * @return
	 */
	public List<PotentialCustomer> findSubList(PotentialCustomer potentialCustomer);
	
	/**
	 * <p>我的工作list</p>
	 * @param potentialCustomer
	 * @return
	 */
	public List<PotentialCustomer> findMyList(PotentialCustomer potentialCustomer);
	
}